import Annex
import Annex.CatFile
+import Annex.GitShaKey
import Types
-import Types.Key
import qualified Git
import qualified Types.Remote as Remote
import Git.Quote
import Messages
-import Data.Maybe
-import qualified Data.ByteString.Short as S (fromShort, toShort)
-
-- From a sha pointing to the content of a file to the key
-- to use to export it. When the file is annexed, it's the annexed key.
-- When the file is stored in git, it's a special type of key to indicate
mk (Just k) = k
mk Nothing = gitShaKey sha
--- Encodes a git sha as a key. This is used to represent a non-annexed
--- file that is stored on a special remote, which necessarily needs a
--- key.
---
--- This is not the same as a SHA1 key, because the mapping needs to be
--- bijective, also because git may not always use SHA1, and because git
--- takes a SHA1 of the file size + content, while git-annex SHA1 keys
--- only checksum the content.
-gitShaKey :: Git.Sha -> Key
-gitShaKey (Git.Ref s) = mkKey $ \kd -> kd
- { keyName = S.toShort s
- , keyVariety = OtherKey "GIT"
- }
-
--- Reverse of gitShaKey
-keyGitSha :: Key -> Maybe Git.Sha
-keyGitSha k
- | fromKey keyVariety k == OtherKey "GIT" =
- Just (Git.Ref (S.fromShort (fromKey keyName k)))
- | otherwise = Nothing
-
--- Is a key storing a git sha, and not used for an annexed file?
-isGitShaKey :: Key -> Bool
-isGitShaKey = isJust . keyGitSha
-
warnExportImportConflict :: Remote -> Annex ()
warnExportImportConflict r = do
isimport <- Remote.isImportSupported r
--- /dev/null
+{- Encoding a git sha as a Key
+ -
+ - Copyright 2017-2025 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU AGPL version 3 or higher.
+ -}
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Annex.GitShaKey where
+
+import Types
+import Types.Key
+import qualified Git
+
+import Data.Maybe
+import qualified Data.ByteString.Short as S (fromShort, toShort)
+
+-- Encodes a git sha as a Key. This is used to represent a non-annexed
+-- file. For example, when storing a git sha on a special remote.
+--
+-- This is not the same as a SHA1 key, because the mapping needs to be
+-- bijective, also because git may not always use SHA1, and because git
+-- takes a SHA1 of the file size + content, while git-annex SHA1 keys
+-- only checksum the content.
+gitShaKey :: Git.Sha -> Key
+gitShaKey (Git.Ref s) = mkKey $ \kd -> kd
+ { keyName = S.toShort s
+ , keyVariety = OtherKey "GIT"
+ }
+
+-- Reverse of gitShaKey
+keyGitSha :: Key -> Maybe Git.Sha
+keyGitSha k
+ | fromKey keyVariety k == OtherKey "GIT" =
+ Just (Git.Ref (S.fromShort (fromKey keyName k)))
+ | otherwise = Nothing
+
+-- Is a key storing a git sha, and not used for an annexed file?
+isGitShaKey :: Key -> Bool
+isGitShaKey = isJust . keyGitSha